package fiuba.algo3;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;

public class ObjetoRobado {
	private String nombre;
	private Ciudad ciudad;
	private Valor valor;
	
	public ObjetoRobado(Valor valor) {
		this.valor = valor;
		
		NodeList tagValor = new ManejadorXML().obtenerElementosDeXML( "objetos.xml", valor.getNombre() );

		if (tagValor != null){
			Element objetosDeValor = (Element) tagValor.item(0);
        	NodeList listaObjetos = objetosDeValor.getElementsByTagName("objeto");
			
			int i = new Double(Math.random() * (listaObjetos.getLength())).intValue();
			Element objetoRobado = (Element) listaObjetos.item(i);
			
			this.nombre = objetoRobado.getAttribute("nombre");
			this.ciudad = new Ciudad( objetoRobado.getAttribute("ciudad") );
		}
	}
	
	public ObjetoRobado() {}
	
	public Node serializar(Document doc) {
		Element elementoObjeto = doc.createElement("ObjetoRobado");
		elementoObjeto.setAttribute("nombre", this.nombre);
		elementoObjeto.appendChild(this.ciudad.serializar(doc));
		return elementoObjeto;
	}
	
	public static ObjetoRobado hidratar(Node elementoObjeto) {
		ObjetoRobado nuevoObjeto = new ObjetoRobado();
		nuevoObjeto.nombre = ((Element)elementoObjeto).getAttribute("nombre");
		nuevoObjeto.ciudad = Ciudad.hidratar( ((Element) elementoObjeto).getElementsByTagName("Ciudad").item(0) );
		return nuevoObjeto;
	}
	
	// GETTERS
	public String getNombre() {
		return nombre;
	}

	public Ciudad getCiudad() {
		return ciudad;
	}

	public Valor getValor() {
		return this.valor;
	}
	// FIN GETTERS

	public enum Valor {
		COMUN("comun"), VALIOSO("valioso"), MUY_VALIOSO("muyValioso");
		
		String nombre;
		
		private Valor(String valor) {
			this.nombre = valor;
		}

		public String getNombre() {
			return nombre;
		}
	}

}
